package com.zliblike_platform.mapper;

import com.zliblike_platform.entity.BookListItem;
import com.zliblike_platform.vo.BookListItemVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 书单条目Mapper接口
 */
@Mapper
public interface BookListItemMapper {
    
    /**
     * 插入书单条目
     * @param item 书单条目
     * @return 受影响的行数
     */
    int insert(BookListItem item);
    
    /**
     * 更新书单条目
     * @param item 书单条目
     * @return 受影响的行数
     */
    int update(BookListItem item);
    
    /**
     * 查询书单中的所有书籍
     * @param listId 书单ID
     * @return 书籍列表
     */
    List<BookListItemVO> selectByListId(@Param("listId") Long listId);
    
    /**
     * 查询书单中的书籍数量
     * @param listId 书单ID
     * @return 书籍数量
     */
    int countByListId(@Param("listId") Long listId);
    
    /**
     * 根据ID查询书单条目
     * @param itemId 条目ID
     * @return 书单条目
     */
    BookListItemVO selectById(@Param("itemId") Long itemId);
    
    /**
     * 删除书单条目
     * @param itemId 条目ID
     * @param listId 书单ID
     * @return 受影响的行数
     */
    int deleteById(@Param("itemId") Long itemId, @Param("listId") Long listId);
    
    /**
     * 检查书籍是否已存在于书单中
     * @param listId 书单ID
     * @param bookId 书籍ID
     * @return 是否存在
     */
    boolean existsInList(@Param("listId") Long listId, @Param("bookId") Long bookId);
    
    /**
     * 删除书单中的所有书籍
     * @param listId 书单ID
     * @return 受影响的行数
     */
    int deleteByListId(@Param("listId") Long listId);
} 